Amazon ECSサービスのプラットフォームバージョンを変更してみた

Amazon ECSサービスのプラットフォームバージョンを変更してみた

Clock Icon2024.11.08

はじめに

本記事では、Amazon ECSサービスのLinuxプラットフォームバージョンの変更方法についてご紹介します。
具体的には、LATESTで作成していたため、明示的にバージョン1.4.0を指定するよう変更します。

執筆時点では、LATESTのLinuxプラットフォームバージョンは1.4.0です。

[LATEST] の Linux プラットフォームバージョンは 1.4.0 です。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/platform-version-migration.html

明示的にバージョンを指定する理由は、プラットフォームバージョンの変更による影響を制御するためです。

LATESTを使用すると、計画的なバージョン管理ができず、予期せぬ問題が発生するリスクがあります。
AWSでは、タスクを新しいプラットフォームバージョンに移行する前に、そのバージョンでの動作確認を行うことを推奨しています。
明示的なバージョン指定により、計画的なテストと移行が可能となり、より安全なシステム運用を実現できます。

FargateタスクのAmazon ECSをプラットフォームバージョン 1.0.0、1.1.0、1.2.0、または 1.3.0 からプラットフォームバージョン 1.4.0 に移行する場合は、次のことを考慮してください。タスクを移行する前に、そのタスクがプラットフォームバージョン 1.4.0 で正しく動作するのを確認することがベストプラクティスです。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/platform-version-migration.html

前提条件

  • ECSサービスが作成済みで、タスクが起動中であること
    • 起動タイプ:Fargate
    • ロードバランサー:ALB(Application Load Balancer)を使用
  • ECSサービスのプラットフォームバージョンがLATESTに設定されていること
    cm-hirai-screenshot 2024-11-07 10.57.41
    • LATESTの場合、起動中のタスクは、1.4.0であることが確認できます
      cm-hirai-screenshot 2024-11-07 11.25.03

プラットフォームバージョンを変更してみる

執筆時点ではマネジメントコンソール上でプラットフォームバージョンの変更はできないため、AWS CloudShellを起動し、コマンドで変更します。

プラットフォームバージョンを変更するためのAWS CLIコマンドは以下の通りです。

$ aws ecs update-service \
  --cluster クラスター名 \
  --service サービス名 \
  --platform-version 1.4.0

# コマンドパラメータの説明
# --cluster: 対象のECSクラスター名を指定
# --service: 変更対象のサービス名を指定
# --platform-version: 変更後のプラットフォームバージョンを指定

https://awscli.amazonaws.com/v2/documentation/api/2.1.21/reference/ecs/update-service.html

コマンド実行後、マネジメントコンソールで確認すると、以下の通りプラットフォームバージョンが1.4.0に正常に変更されていることが確認できます。

cm-hirai-screenshot 2024-11-07 11.31.20

これでECSサービスのプラットフォームバージョン指定をLATESTから1.4.0に変更が完了です。

変更作業の影響と注意点

プラットフォームバージョンをLATESTから1.4.0に更新すると、以下の挙動が自動的に実行されることが分かりました。

  1. バージョン1.4.0が指定された新規タスクが起動
  2. 既存のLATEST指定タスクが停止

プラットフォームバージョン変更時、デプロイの強制を指定しない場合でも、上述のとおり、タスクの入れ替えが発生します。

そのため、本番環境でプラットフォームバージョンを変更する際は、メンテナンス時間帯での実施を検討し、事前に検証環境での動作確認を行うことをお勧めします。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.